/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Telas;

import Beans.BeanPessoa;
import CRUD.CRUDPessoa;
import ClassesExtras.LetrasMaiusculas;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Marcos
 */
public class Jp_ConsultaPessoa extends javax.swing.JPanel {

    DefaultTableModel TMPessoa = new DefaultTableModel(null, new String[]{"Código", "Nome", "Cadastro", "Nascimento", "Idade",
        "Sexo", "Est_Civil", "Cor", "Naturalidade", "RG", "CPF", "Email", "Endereço", "Complemento", "Bairro", "Telefone",
        "Celular", "Sangue", "Observação"}) {// Faz a sobreposição de método e permite tbm a instancia de classe abstrata, quando implementado seus métodos
        @Override
        public boolean isCellEditable(int row, int column) {
            return false; //Não deixar editar uma linha da JTable
//            return super.isCellEditable(row, column);
        }
    };
    List<BeanPessoa> ListaPessoa;

    /**
     * Creates new form Jp_ConsultaPessoa
     */
    public Jp_ConsultaPessoa() {
        initComponents();
        AlinhaColunaJTable();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroupConsultaPaciente = new javax.swing.ButtonGroup();
        jPanelConsultaPaciente = new javax.swing.JPanel();
        jRadioButtonPessoa = new javax.swing.JRadioButton();
        jTextFieldPessoa = new LetrasMaiusculas();
        jRadioButtonCPF = new javax.swing.JRadioButton();
        jFormattedTextFieldCPF = new javax.swing.JFormattedTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableConsultaPessoa = new javax.swing.JTable();

        jPanelConsultaPaciente.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        buttonGroupConsultaPaciente.add(jRadioButtonPessoa);
        jRadioButtonPessoa.setSelected(true);
        jRadioButtonPessoa.setText("Pessoa:");
        jRadioButtonPessoa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButtonPessoaActionPerformed(evt);
            }
        });

        jTextFieldPessoa.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jTextFieldPessoaKeyPressed(evt);
            }
        });

        buttonGroupConsultaPaciente.add(jRadioButtonCPF);
        jRadioButtonCPF.setText("CPF:");
        jRadioButtonCPF.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButtonCPFActionPerformed(evt);
            }
        });

        try {
            jFormattedTextFieldCPF.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }
        jFormattedTextFieldCPF.setEnabled(false);
        jFormattedTextFieldCPF.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jFormattedTextFieldCPFKeyPressed(evt);
            }
        });

        jTableConsultaPessoa.setModel(TMPessoa);
        jScrollPane1.setViewportView(jTableConsultaPessoa);

        javax.swing.GroupLayout jPanelConsultaPacienteLayout = new javax.swing.GroupLayout(jPanelConsultaPaciente);
        jPanelConsultaPaciente.setLayout(jPanelConsultaPacienteLayout);
        jPanelConsultaPacienteLayout.setHorizontalGroup(
            jPanelConsultaPacienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelConsultaPacienteLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelConsultaPacienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelConsultaPacienteLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 947, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(jPanelConsultaPacienteLayout.createSequentialGroup()
                        .addComponent(jRadioButtonPessoa)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldPessoa)
                        .addGap(18, 18, 18)
                        .addComponent(jRadioButtonCPF)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jFormattedTextFieldCPF, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(68, 68, 68))))
        );
        jPanelConsultaPacienteLayout.setVerticalGroup(
            jPanelConsultaPacienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelConsultaPacienteLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelConsultaPacienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRadioButtonPessoa)
                    .addComponent(jTextFieldPessoa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jRadioButtonCPF)
                    .addComponent(jFormattedTextFieldCPF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 527, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanelConsultaPaciente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanelConsultaPaciente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    private void jRadioButtonPessoaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonPessoaActionPerformed
        if (jRadioButtonPessoa.isSelected() == true) {
            jTextFieldPessoa.setEnabled(true);
            jFormattedTextFieldCPF.setEnabled(false);
            jTextFieldPessoa.grabFocus();
            jFormattedTextFieldCPF.setText(null);
        } else {
            jFormattedTextFieldCPF.setEnabled(true);
            jFormattedTextFieldCPF.grabFocus();
        }
    }//GEN-LAST:event_jRadioButtonPessoaActionPerformed

    private void jRadioButtonCPFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonCPFActionPerformed
        if (jRadioButtonCPF.isSelected() == true) {
            jFormattedTextFieldCPF.setEnabled(true);
            jTextFieldPessoa.setEnabled(false);
            jFormattedTextFieldCPF.grabFocus();
            jTextFieldPessoa.setText(null);
        } else {
            jTextFieldPessoa.setEnabled(true);
            jTextFieldPessoa.grabFocus();
        }
    }//GEN-LAST:event_jRadioButtonCPFActionPerformed

    private void jTextFieldPessoaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldPessoaKeyPressed
        try {
            listapessoanome();
        } catch (SQLException ex) {
            Logger.getLogger(Jp_ConsultaPessoa.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ParseException ex) {
            Logger.getLogger(Jp_ConsultaPessoa.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jTextFieldPessoaKeyPressed

    private void jFormattedTextFieldCPFKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jFormattedTextFieldCPFKeyPressed
        try {
            listapessoacpf();
        } catch (SQLException ex) {
            Logger.getLogger(Jp_ConsultaPessoa.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ParseException ex) {
            Logger.getLogger(Jp_ConsultaPessoa.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jFormattedTextFieldCPFKeyPressed
    public void listapessoanome() throws SQLException, ParseException {
        CRUDPessoa CRUDPes = new CRUDPessoa();
        ListaPessoa = CRUDPes.getListaPacienteNome("%" + jTextFieldPessoa.getText() + "%");
        mostraPessoa(ListaPessoa);
    }

    public void listapessoacpf() throws SQLException, ParseException {
        CRUDPessoa CRUDPes = new CRUDPessoa();
        String cpf, cpf2;
        cpf = jFormattedTextFieldCPF.getText().replace(".", "");
        cpf2 = cpf.replace("-", "");
        System.out.println(cpf2);
        ListaPessoa = CRUDPes.getListaPessoaCPF("%" + cpf2.trim() + "%");
        mostraPessoa(ListaPessoa);
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroupConsultaPaciente;
    private javax.swing.JFormattedTextField jFormattedTextFieldCPF;
    private javax.swing.JPanel jPanelConsultaPaciente;
    private javax.swing.JRadioButton jRadioButtonCPF;
    private javax.swing.JRadioButton jRadioButtonPessoa;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTableConsultaPessoa;
    private javax.swing.JTextField jTextFieldPessoa;
    // End of variables declaration//GEN-END:variables

    private void AlinhaColunaJTable() {
        int col = 0;
        jTableConsultaPessoa.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //barra horizontal na JTable 
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(100); // Acertar Tamanho de cada coluna
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(320);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(75);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(80);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(50);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(70);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(70);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(70);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(90);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(80);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(110);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(300);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(200);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(100);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(180);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(100);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(100);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(60);
        jTableConsultaPessoa.getColumnModel().getColumn(col++).setPreferredWidth(300);
    }

    private void mostraPessoa(List<BeanPessoa> ListaPessoa) {
        if (TMPessoa == null) {
            JOptionPane.showMessageDialog(null, "teste");
        } else {
            while (TMPessoa.getRowCount() > 0) {
                TMPessoa.removeRow(0);
            }
            if (ListaPessoa.size() < 1) {
                //JOptionPane.showMessageDialog(null, "teste2");
            } else {
                String[] linha = new String[]{null, null};
                for (int i = 0; i < ListaPessoa.size(); i++) {
                    TMPessoa.addRow(linha);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getCod_pessoa(), i, 0);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getNom_pessoa(), i, 1);

                    String dt_cadastro = ListaPessoa.get(i).getDt_cadastro().toString();
                    String str_dt_cadastro = dt_cadastro;
                    String[] array_dt_cadastro = str_dt_cadastro.split("-");
                    String dt_cadastro_alter = array_dt_cadastro[2] + "/" + array_dt_cadastro[1] + "/" + array_dt_cadastro[0];
                    TMPessoa.setValueAt(dt_cadastro_alter, i, 2);

                    String dt_nasc = ListaPessoa.get(i).getDt_nasc().toString();
                    String str_dt_nasc = dt_nasc;
                    String[] array_dt_nasc = str_dt_nasc.split("-");
                    String dt_nasc_alter = array_dt_nasc[2] + "/" + array_dt_nasc[1] + "/" + array_dt_nasc[0];
                    TMPessoa.setValueAt(dt_nasc_alter, i, 3);

                    TMPessoa.setValueAt(ListaPessoa.get(i).getIdade(), i, 4);
                    if (ListaPessoa.get(i).getSexo().equals("M")) {
                        TMPessoa.setValueAt("Masculino", i, 5);
                    } else {
                        TMPessoa.setValueAt("Feminino", i, 5);
                    }
                    TMPessoa.setValueAt(ListaPessoa.get(i).getEst_civil().trim(), i, 6);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getCor_pele().trim(), i, 7);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getNaturalidade().trim(), i, 8);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getIdentidade(), i, 9);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getCpf(), i, 10);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getEmail().trim(), i, 11);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getEndereco().trim(), i, 12);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getComplemento().trim(), i, 13);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getBairro().trim(), i, 14);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getTelefone(), i, 15);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getCelular(), i, 16);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getTp_sangue(), i, 17);
                    TMPessoa.setValueAt(ListaPessoa.get(i).getObservacao(), i, 18);
                }
            }
        }
    }
}
